import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Environment:
title: Optional[str] = None
code: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Party:
title: Optional[str] = None
code: Optional[str] = None
version: Optional[str] = None
environment: Optional[Environment] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Header:
message_i_d: Optional[str] = None
timestamp: datetime.datetime = datetime.datetime(1, 1, 1)
sender: Optional[Party] = None
recipient: Optional[Party] = None
request_message_i_d: Optional[Object] = None
class eventType(str, Enum):
UPDATE = 'Update'
CREATE = 'Create'
DELETE = 'Delete'
RESPONSE = 'Response'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Document(ICustomProperties):
id: Optional[str] = None
root_document_i_d: Optional[str] = None
registrationprofile_i_d: Optional[str] = None
title: Optional[str] = None
full_title: Optional[str] = None
number: Optional[str] = None
version: Optional[str] = None
external_number: Optional[str] = None
external_version: Optional[str] = None
internal_number: Optional[str] = None
internal_invoice_number: Optional[str] = None
person_i_d: int = 0
relation_i_d: int = 0
relation_title: Optional[str] = None
project_i_d: int = 0
project_title: Optional[str] = None
extension: Optional[str] = None
date: Optional[datetime.datetime] = None
comments_count: int = 0
has_comments: bool = False
has_preview: bool = False
extra_field: Optional[str] = None
is_favorite: bool = False
documentcategory_text: Optional[str] = None
file_size: Optional[int] = None
file_date: Optional[datetime.datetime] = None
hash: Optional[str] = None
hash_type: Optional[str] = None
file_url: Optional[str] = None
standard_document_url: Optional[str] = None
is_corporate_identity: bool = False
user_title: Optional[str] = None
is_frozen: bool = False
internal_company_i_d: int = 0
direct_url: Optional[str] = None
allow_digital_signing_only_on_primary_versions: bool = False
is_primary_version: bool = False
file_extension: Optional[str] = None
custom_properties: Optional[Dict[str, Object]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DocumentMessage:
header: Optional[Header] = None
event_type: Optional[eventType] = None
document: Optional[Document] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DocumentRequestMessage:
header: Optional[Header] = None
root_document_i_d: Optional[str] = None
include_physical_file: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProcessDocumentRequestMessage:
instance_id: Optional[str] = None
document_request: Optional[DocumentRequestMessage] = None
Python ProcessDocumentRequestMessage DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /xml/reply/ProcessDocumentRequestMessage HTTP/1.1
Host: kpm_digiofficeapigateway.tbi.nl
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<ProcessDocumentRequestMessage xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/DigiOffice.Integration.TBIXchangeAzure.Messages">
<DocumentRequest>
<Header>
<MessageID>String</MessageID>
<Recipient>
<Code>String</Code>
<Environment>
<Code>String</Code>
<Title>String</Title>
</Environment>
<Title>String</Title>
<Version>String</Version>
</Recipient>
<RequestMessageID />
<Sender>
<Code>String</Code>
<Environment>
<Code>String</Code>
<Title>String</Title>
</Environment>
<Title>String</Title>
<Version>String</Version>
</Sender>
<Timestamp>0001-01-01T00:00:00</Timestamp>
</Header>
<IncludePhysicalFile>false</IncludePhysicalFile>
<RootDocumentID>String</RootDocumentID>
</DocumentRequest>
<InstanceId>00000000-0000-0000-0000-000000000000</InstanceId>
</ProcessDocumentRequestMessage>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<DocumentMessage xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/DigiOffice.Integration.TBIXchangeAzure.Messages">
<Document>
<Code>String</Code>
<ConstructionBlockReference>
<GlobalID>String</GlobalID>
<Title>String</Title>
</ConstructionBlockReference>
<ConstructionNumberReference>
<GlobalID>String</GlobalID>
<Title>String</Title>
</ConstructionNumberReference>
<CreatedBy>String</CreatedBy>
<CreationDate>0001-01-01T00:00:00</CreationDate>
<CustomFields>
<CustomField>
<Name>String</Name>
<Value>String</Value>
</CustomField>
</CustomFields>
<DeletedDate>0001-01-01T00:00:00</DeletedDate>
<DeletedDateSpecified>false</DeletedDateSpecified>
<DocumentTypeReference>
<GlobalID>String</GlobalID>
<Title>String</Title>
</DocumentTypeReference>
<File>
<Content>String</Content>
<ModifiedDate>0001-01-01T00:00:00</ModifiedDate>
<Name>String</Name>
<Size>0</Size>
<Type>String</Type>
</File>
<Floor>0</Floor>
<FloorSpecified>false</FloorSpecified>
<GlobalID>String</GlobalID>
<HousingTypeReference>
<GlobalID>String</GlobalID>
<Title>String</Title>
</HousingTypeReference>
<ModifiedBy>String</ModifiedBy>
<ModifiedDate>0001-01-01T00:00:00</ModifiedDate>
<NewestVersion>false</NewestVersion>
<ProjectReference>
<GlobalID>String</GlobalID>
<Title>String</Title>
</ProjectReference>
<RelationReference>
<GlobalID>String</GlobalID>
<Title>String</Title>
</RelationReference>
<RootDocumentID>String</RootDocumentID>
<Subject>String</Subject>
<VersionNumber>String</VersionNumber>
</Document>
<EventType>Update</EventType>
<Header>
<MessageID>String</MessageID>
<Recipient>
<Code>String</Code>
<Environment>
<Code>String</Code>
<Title>String</Title>
</Environment>
<Title>String</Title>
<Version>String</Version>
</Recipient>
<RequestMessageID />
<Sender>
<Code>String</Code>
<Environment>
<Code>String</Code>
<Title>String</Title>
</Environment>
<Title>String</Title>
<Version>String</Version>
</Sender>
<Timestamp>0001-01-01T00:00:00</Timestamp>
</Header>
</DocumentMessage>